<?php
declare (strict_types = 1);

namespace app\controller;

use app\business\Excel;
use app\model\Power;
use think\facade\Log;
use think\Request;

class Group
{
    /**
     * @return \think\response\View
     * 这是添加组页面的方法
     */
    public function create()
    {
//        实例化对象
        $group=new \app\model\Group();
//        使用模型关联操作
        $data=$group->getPower();
//        实例化模型
        $power=new Power();
//        查询数据
        $powerData=$power->getPowerAll();
//        跳转到视图层
        return view('index/addGroupShow',['powerData'=>$powerData]);
    }

    /**
     * @param Request $request
     * @return \think\response\Redirect
     * 这是添加组的方法
     */
    public function save(Request $request)
    {
//        接收前端传递的数据
        $data=$request->get();
//        将数组转换成字符串
        $data['power_id']=implode(',',$data['power_id']);
//        实例化模型
        $group=new \app\model\Group();
//        调用添加方法
        $group->addGroupData($data);
//        记录日志
        Log::record('提交成功');
//        跳转到列表页
        return redirect('groupList');
    }

    /**
     * @param Request $request
     * @return \think\response\View
     * 这是列表页的方法
     */
    public function read(Request $request)
    {
//        接收关键字
        $keywords=$request->get('keywords');
//        实例化模型层
        $group=new \app\model\Group();
//        调用查询方法
        $data=$group->getGroupData($keywords);
//        跳转到视图层
        return view('index/groupList',['data'=>$data,'keywords'=>$keywords]);
    }

    /**
     * @param $id
     * @return \think\response\View
     * 这是修改页面的方法
     */
    public function edit($id)
    {
//        实例化模型并调用方法
        $data=(new \app\model\Group())->getGroupById($id);
//        实例化模型
        $power=new Power();
//        获取数据
        $powerData=$power->getPowerAll();
//        跳转到视图层
        return view('index/updateShow',['data'=>$data,'powerData'=>$powerData]);
    }

    /**
     * @param Request $request
     * @return \think\response\Redirect
     * 这是修改的方法
     */
    public function update(Request $request)
    {
//        接受前端数据
        $data=$request->get();
//        将数组转换成字符串
        $data['power_id']=implode(',',$data['power_id']);
//        实例化模型层进行修改
        (new \app\model\Group())->updateGroupData($data);
//        跳转路由
        return redirect('groupList');
    }

    /**
     * @param Request $request
     * @return \think\response\Json
     * 这是单删的方法
     */
    public function delete(Request $request)
    {
//        接收id
        $id=$request->get('id');
//        实例化模型层
        $group=new \app\model\Group();
//        调用方法
        $res=$group->delGroup($id);
//        判断返回值
        if($res){
            return json([
                'data'=>'',
                'code'=>200,
                'msg'=>'删除成功'
            ]);
        }
        return json([
            'data'=>'',
            'code'=>500,
            'msg'=>'删除失败'
        ]);
    }

    /**
     * @param Request $request
     * @return \think\response\Json
     * 这是批删的方法
     */
    public function delGroupAll(Request $request){
//        接收id
        $id=$request->get('id');
//        实例化模型层
        $group=new \app\model\Group();
//        调用方法
        $res=$group->delGroupAll($id);
//        判断返回值
        if($res){
            return json([
                'data'=>'',
                'code'=>200,
                'msg'=>'删除成功'
            ]);
        }
        return json([
            'data'=>'',
            'code'=>500,
            'msg'=>'删除失败'
        ]);
    }

    /**
     * 这是部分导出的方法
     */
    public function someExport(){
        // 设置表格的表头数据
        $header = ["A1" => "id", "B1" => "用户组名"];
        //调Group模型从group表查询数据并转数组
        $data=(new \app\model\Group())->someExport()->toArray();
        // 保存文件的类型
        $type= true;
        // 设置下载文件保存的名称
        $fileName = '用户组表(部分)'.time();
        // 调用方法导出excel
        Excel::export($header,$type,$data,$fileName);
    }

    /**
     *这是全部导出的方法
     */
    public function allExport(){
        // 设置表格的表头数据
        $header = ["A1" => "id", "B1" => "用户组名",'C1'=>'状态'];
        //调Group模型从group表查询数据并转数组
        $data=(new \app\model\Group())->allExport()->toArray();
        // 保存文件的类型
        $type= true;
        // 设置下载文件保存的名称
        $fileName = '用户组表(全部)'.time();
        // 调用方法导出excel
        Excel::export($header,$type,$data,$fileName);
    }
}
